﻿using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;

namespace Clancy.Interfaces
{
    public interface IOperationAdapter : IDisposable
    {
        ObservableCollection<IRecording> RecordingCollection { get; }

        Task AddNewSource(IVideoSourceFilterInfo videoSourceFilterInfo);

        Task<bool> DeleteRecording(Guid selectedRecordingId);

        Task DeleteVideoSource(ISurveilanceObject selectedSurveilanceObject);

        ISurveilanceObject[] GetAllSurveilances();

        IVideoSourceFilterInfo[] GetAvailableSources();

        ISurveilanceStatus GetSurveilance(ISurveilanceObject surveilanceObject);

        Task ShowAdvancedVideoDialog(ISurveilanceObject selectedSurveilanceObject);

        Task StartVideoStream(ISurveilanceObject survObj);

        Task StopVideoStream(ISurveilanceObject survObj);

        Task UpdateSurveilanceObject(ISurveilanceObject surveilanceObject);

        Task UpdateSurveilanceObject(ISurveilanceObject selectedSurveilanceObject, string propertyName);
    }
}